﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;

public partial class Tarea_FrListarSegTareas : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //-------------------------Lineas Agregadas para la seguridad----------------------------------------------------
        if (Session["nit"] != null)
            Response.Redirect("/SUEWebSite/Error.aspx");
        else if (Session["nomUsr"] != null)
        {
            List<String> Permisos = (List<String>)Session["Permisos"];
            if (!Permisos.Contains(System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath)))
                Response.Redirect("/SUEWebSite/Error.aspx");
        }
        else Response.Redirect("/SUEWebSite/Principal.aspx");
        //-------------------------Lineas Agregadas para la seguridad----------------------------------------------------
         CargarSeguimiento("");
       
    }

    /// <summary>
    /// Se crea un DataTable para construir la información a mostrar en el tabla
    /// se buscan los archivos dentro de las carpetas.
    /// Se filtra la busqueda, si viene vacia se muestran todos las tareas de seguimiento
    /// sino se muestran las tareas buscadas por el nombre de la tarea y por el nombre del practicante
    /// tomada en el campo texbox
    /// </summary>
    /// <param name="tareaSeg">(String para filtrar la busqueda)</param>

    private void CargarSeguimiento(string tareaSeg)
    {
        GestionarTareas tarea = new GestionarTareas();
        DataTable dt = tarea.ConsultarSegTareas();
        string archivo = "";
        string subido = "";
        int cont = 0;
        DataTable dtMostrar = new DataTable();
        dtMostrar.Columns.Add("nombre", typeof(string));
        dtMostrar.Columns.Add("apellido", typeof(string));
        dtMostrar.Columns.Add("idTarea", typeof(string));
        dtMostrar.Columns.Add("Tarea", typeof(string));
        dtMostrar.Columns.Add("Archivo", typeof(string));
        dtMostrar.Columns.Add("Subido", typeof(string));
        dtMostrar.Columns.Add("NombreUsuario", typeof(string));
           
        foreach (DataRow dr in dt.Rows)
        {
          string[] files = Directory.GetFiles(Server.MapPath("../Archivo/Tareas") + "\\" + dt.Rows[cont]["Usuario_nombreUsuario"].ToString() + "\\" + dt.Rows[cont]["Tarea_idTarea"].ToString());
            if (files.Length > 0)
            {
                foreach (string file in files)
                {
                    FileInfo finfo = new FileInfo(file);
                    archivo = finfo.Name;
                    subido = finfo.CreationTime.ToString();
                }
            } 
            if (tareaSeg != "")
            {
                if (tareaSeg == dt.Rows[cont]["nombre"].ToString())
                    if(dt.Rows[cont]["NombrePracticante"].ToString().ToLower().Contains(TextBoxNobrePracticante.Text.ToLower()))
                    dtMostrar.Rows.Add(dt.Rows[cont]["NombrePracticante"].ToString(), dt.Rows[cont]["apellido"].ToString(),
                  dt.Rows[cont]["Tarea_idTarea"].ToString(), dt.Rows[cont]["nombre"].ToString(), archivo, subido, dt.Rows[cont]["Usuario_nombreUsuario"].ToString());
            }
            else dtMostrar.Rows.Add(dt.Rows[cont]["NombrePracticante"].ToString(), dt.Rows[cont]["apellido"].ToString(),
                 dt.Rows[cont]["Tarea_idTarea"].ToString(), dt.Rows[cont]["nombre"].ToString(), archivo, subido, dt.Rows[cont]["Usuario_nombreUsuario"].ToString());

            cont++;
            archivo = "";
            subido = "";
        }


        GridView1.DataSource = dtMostrar;
        GridView1.DataBind();
        limpiar();
    }

    /// <summary>
    /// Al cambiar de tarea se llama al metodo cargarSeguimiento para mostrar el seguimiento
    /// especificamente de la tarea seleccionado en el DropDownListTareas
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    protected void DropDownListTareas_SelectedIndexChanged(object sender, EventArgs e)
    {
        CargarSeguimiento(DropDownListTareas.SelectedItem.Text.ToString());
    }

    /// <summary>
    /// El hacer click se llama al metodo CargarSeguimiento con el parametro vacia para cargar todas las tareas
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>

    protected void LinkButtonTodas_Click(object sender, EventArgs e)
    {
        CargarSeguimiento("");
    }
    /// <summary>
    /// El hacer click se llama al metodo CargarSeguimiento con el parametro de la tarea seleccionada
    /// </summary>
    

    protected void ButtonBuscar_Click(object sender, EventArgs e)
    {
        CargarSeguimiento(DropDownListTareas.SelectedItem.Text.ToString());   
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();
        limpiar();
    }

    private void limpiar()
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                HyperLink hl = (HyperLink)row.Cells[3].Controls[0]; // 3 colimnada del gridview con el link de hoja de vida
                if (hl.Text != "")
                    hl.Visible = true;
                else
                    hl.Visible = false;
            }
        }
    }
}
